package util

import (
	"github.com/bwmarrin/snowflake"
	"log"
	"strconv"
	"time"
)

var (
	node *snowflake.Node
)

// 实例化雪花算法生成器
func NewSnowflake(startTime string, machineId int64) {
	var st time.Time
	var err error
	st, err = time.Parse("2006-01-02", startTime)
	if err != nil {
		log.Fatalf("雪花算法生成器启动失败：%v", err)
	}
	snowflake.Epoch = st.UnixNano() / 1e6 // 设置启动因子时间
	node, err = snowflake.NewNode(machineId)
	if err != nil {
		log.Fatalf("创建节点失败: %v", err)
	}
}

// 获取雪花算法生成的id
func GetId() string {
	return strconv.FormatInt(node.Generate().Int64(), 10)
}
